The proliferation of the Internet and the general availability of data connections are changing the way media is provided and used. In particular, conventional television and/or radio (i.e.—audio) services are increasingly giving way to digital network-based streaming media on demand and/or live streaming media. Such streaming media content can be delivered through any digital network, such as a cable company's set top box-based network, or increasingly, through the Internet. The delivery can be to any suitable rendering device, such as an Apple TV or an Xbox 360, connected to a television or monitor, or can be to a rendering device and display, such as an Internet TV or a mobile device, such as player software executing on an Apple iPad, a laptop computer, a mobile phone, etc.
In most cases, streaming media is segmented into “chunks” to be delivered through the network to the player. Each chunk will typically contain the video and/or audio information required to render a selected duration, such as ten seconds, of the media at a given resolution.
When a player commences playback of a program, it first downloads one or more chunks of the program into a player cache and begins playback with those chunks while the next needed chunks are being downloaded through the network. In this manner, playback of the program can start before the entire program has been downloaded.
As the market shifts towards delivery of content via such streaming media delivery systems, the ability to advertise in such streaming media has also offered new opportunities to advertisers and content deliverers. For example, it is now possible, when media is requested by a viewer, to select the ads to be shown and/or played during the delivery of the program, the ads being selected based upon any suitable criteria, such as: viewer demographics, including where the player/viewer is located and/or the particular viewer watching the content; the type of device (mobile versus fixed) that the content is being displayed on; etc. In fact, a wide range of demographic and other criteria can be applied to the selection of which advertisements (or other content) will be shown to which viewers and the full range of such considerations will be apparent to those of skill in the art and not be discussed herein.
To date, the playback of content, such as ad content, inserted into a streaming media program has been achieved in one of two manners: namely by having the user's rendering device employ two players, each of which plays one of two streams of media data, and switching between the two players as required; or inserting the content into the main program stream to form a single composite stream for the total media program which is played by a single player on the user's rendering device.
With switching between players, the stream containing the main program is played until a specified time point is reached, when an advertiser or other entity wishes to play other content, and then the rendering device is switched to the second player which plays another stream containing the other content. When the playback of the other content is completed, the rendering device switches back to the first player which recommences playback of the main program from the point at which it was stopped.
While such a player switching system can work, it requires the end user's rendering device to download and appropriately buffer streaming content for both players and this can adversely affect the heuristics and control logic related to managing the downloads through the network.
Further still, the logic and control for switching between players must be implemented at the user's rendering device, which can introduce undesired playback variability (i.e.—potentially allowing the user to “skip” inserted content, etc.).
The more preferred method of playing inserted content is to incorporate the inserted content into the stream of chunks of the media program to form a single, composite, stream. In such single stream broadcast systems, the content to be inserted is inserted into the stream of chunks being downloaded such that the player merely plays a stream of chunks, which stream includes both the media program and the inserted content.
While inserting content into a single stream is a more elegant solution than player switching solutions, it too has until now suffered from some disadvantages. Specifically, because the streaming media program comprises a single stream of chunks comprising both chunks representing the media program and chunks representing the inserted content, the media program must be encoded (compressed and segmented, or “chunked”) such that, at the time point where it is desired to play inserted content, the chunk representing the current duration of the media program ends so that the chunk representing the beginning of the inserted content can be played. Thus, to permit the creation of the single stream, the media program must be encoded with prior knowledge of the time points where the insertion of additional content is to occur so that chunk boundaries (i.e.—rendered content end points) can be correctly created.
Therefore, when producing a chunked streaming media program, the content provider must know each and every time point at which it may be desired to insert content into the stream and to ensure that the chunk boundaries containing the program content to be rendered immediately preceding the inserted content end at the desired insertion time point to permit the decoder to seamlessly begin playing the first chunk of the inserted content at that desired time point.
This need to create the chunks of the media program with boundaries at appropriate time points to accommodate the insertion of content has increased the cost of providing the content and has also limited the insertion of content to only those time points in the encoded program that have previously been defined and encoded to provide the necessary chunk boundaries. If it is subsequently desired to insert content at a different time point in the media program, the encoding and segmenting of the media program must be re-performed to ensure that the necessary chunk boundary is created at the newly desired insertion time point.
For example, it may originally have been desired to insert content at the two minute and at the eighteen minute time points within a thirty minute media program. The media program can be encoded and segmented to provide media program chunk boundaries at the desired two minute and eighteen minute time points to enable this. If it is subsequently desired to also insert content at the ten minute point in the media program, it is not possible to do so unless the media program is re-encoded and re-segmented to ensure the necessary media program chunk boundary is also present at the ten minute point.
Problems also exist with single stream broadcast systems for live streaming programs. In such cases, the content provider will decide to insert an advertisement, or other content, “on the fly” during the streaming program. Typically the streaming program is transmitted with some delay, for example seven seconds, and the content provider will indicate to the encoding and segmenting system in the content delivery system, by appropriate signaling means, that content will be inserted some selected amount of time after the appropriate signal has been sent. The encoding and segmenting system then constructs a chunk with a boundary at the desired time point, such that the desired content can be inserted at that time point.
As will be apparent, this time point-specific encoding and segmenting of live program streams places a higher computational load on the encoder, requiring higher performing, and hence higher priced, systems as the encoding and segmenting must be completed within the broadcast delay time. Also, with time-point specific encoding systems, it is not possible for downstream content providers (regional broadcasters, etc.) to insert their own content at different times within the live streaming program without the cooperation of the original content provider as, otherwise, the main program chunk boundaries will not necessarily occur at the required time points.
Accordingly, it is desired to have a system and method of inserting content into a streaming media program to obtain a single stream broadcast, which does not require the presence of chunk boundaries at desired times.